import com.learning.pojo.AopBean;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Ioc {
	@Test
	public void test(){
		//ApplicationContext是容器的高级接口，BeanFactory是顶级容器（根容器，规范容器的基础行为）
		//Spring应用上下文，官方称之为IOC容器（错误的认识：容器就是map；准确来说，map只是ioc容器的一个成员。叫做单例池，singletonObjects，容器只是一组组件和过程的集合，包括BeanFactory，BeanPostProcessor等之间的协作）

		/**
		 * IOC容器是管理和创建bean对象的，Spring bean是有生命周期的（生命周期是什么）
		 * 构造器、初始化方法执行、Bean后置处理器的before/after方法：AbstractApplicationContext#refresh#finishBeanFactoryInitialization
		 * beanfactory工厂的后置处理器初始化、执行：AbstractApplicationContext#refresh#invokeBeanFactoryPostProcessors
		 * bean的后置处理器初始化：AbstractApplicationContext#refresh#registerBeanPostProcessors
		 */

		ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
		AopBean aopBean = ((ClassPathXmlApplicationContext) applicationContext).getBean(AopBean.class);
		System.out.println(aopBean);
	}

}
